AWSマネジメントコンソールでAmazon RDS for PostgreSQLにおける、本番稼働用、開発/テスト、無料利用枠の違いを比較してみた
こんにちは。まるとです。
AWSマネジメントコンソールでAmazon RDSを触ると必ず選択に迷うのが、このテンプレートの選択です。
この選択により後の設定のデフォルト値が変わるのですが、どこが変わるのかが気になったので、実際に切り替えて値がどう変わるのか調べてみました。
なお、設定項目はあくまでもテンプレートであり、個別に設定変更を行うこともできます。
ただし、テンプレートによっては意図しない課金を防ぐために、設定変更ができない項目があります。
先に結論
大項目 | 小項目 | 本番稼働用 | 開発/テスト | 無料利用枠 |
---|---|---|---|---|
可用性と耐久性 | デプロイオプション | マルチAZ DBクラスター | マルチAZ DBクラスター | 単一DBインスタンス(変更不可) |
設定 | 認証情報管理 | AWS Secrets Managerで管理 | AWS Secrets Managerで管理 | セルフマネージド |
パスワード自動生成 | - (※1) | - (※1) | チェックなし | |
暗号化キーを選択 | aws/secretsmanager | aws/secretsmanager | - (※2) | |
インスタンスの設定 | DBインスタンスクラス | 標準クラス、db.m5d.large | コンピューティング最適化クラス、db.c6gd.medium | バーストクラス、db.t4g.medium |
ストレージ | ストレージタイプ | プロビジョンド IOPS SSD (io2) | 汎用SSD (gp3) | 汎用SSD (gp3) |
ストレージ割り当て | 400 GiB | 200 GiB | 20 GiB | |
プロビジョンド IOPS | 3000 IOPS | 3000 IOPS | 3000 IOPS | |
ストレージスループット | - (※3) | 125 MiBps | 125 MiBps | |
ストレージの自動スケーリング | - (※4) | - (※4) | チェックあり | |
最大ストレージしきい値 | - (※4) | - (※4) | 1000 GiB | |
モニタリング | DevOps Guru をオンにする | チェックあり | チェックあり | チェックなし |
追加設定 | 最初のデータベース名 | - (※4) | - (※4) | 未指定 |
オプショングループ | - (※4) | - (※4) | default:postgres<バージョン> | |
バックアップ保持期間 | 7日間 | 7日間 | 1日間 | |
削除保護の有効化 | チェックあり | チェックなし | チェックなし |
※1: 認証情報管理をAWS Secrets Managerで管理している場合、パスワードは自動設定される。
※2: 認証情報管理がセルフマネージドの場合、設定不可
※3: ストレージタイプが「プロビジョンド IOPS SSD (io2)」の場合、設定不可。スループットはIOPSの設定値により拡張される。参考
※4: 可用性と耐久性が「マルチAZ DBクラスター」に設定されている場合、設定不可
見てみる
それでは早速見ていきましょう。
なお、前提条件として次の3つを定義します。
- AWSマネジメントコンソールから操作すると仮定する
- データベースの作成方法は「標準作成」とする
- エンジンのタイプは「PostgreSQL」、エンジンのバージョンを「PostgreSQL 16.3-R2」とする
本番稼働用
まずはデフォルトで選択されている「本番稼働用」を見ていきます。
なお、ネットワークなどの設定を行う大項目「接続」はデフォルトVPCの有無など環境により異なるので、下記の表には記載していません。
また、データベース名やタグなどデータベース自体のパフォーマンスに直接関わらないものも表には記載していません。
※この後見ていく、テンプレート「開発/テスト」、「無料利用枠」も同様の扱いとします。
大項目 | 小項目 | デフォルト値 |
---|---|---|
可用性と耐久性 | デプロイオプション | マルチAZ DBクラスター |
設定 | 認証情報管理 | AWS Secrets Managerで管理 |
暗号化キーを選択 | aws/secretsmanager | |
インスタンスの設定 | DBインスタンスクラス | 標準クラス、db.m5d.large |
ストレージ | ストレージタイプ | プロビジョンド IOPS SSD (io2) |
ストレージ割り当て | 400 GiB | |
プロビジョンド IOPS | 3000 IOPS | |
ストレージの自動スケーリング | - | |
データベース認証 | データベース認証オプション | パスワード認証 |
モニタリング | Performance Insights をオンにする | チェックあり |
Performance Insights の保持期間 | 7日 | |
AWS KMS キー | aws/rds | |
DevOps Guru をオンにする | チェックあり | |
拡張モニタリングの有効化 | チェックなし | |
追加設定 | 最初のデータベース名 | - |
DB クラスターのパラメータグループ | default.postgres<バージョン> | |
オプショングループ | - | |
自動バックアップを有効にします | チェックあり | |
バックアップ保持期間 | 7日間 | |
バックアップウィンドウ | 指定なし | |
暗号化 | 暗号を有効化 | |
AWS KMS キー | aws/rds | |
ログのエクスポート/PostgreSQL ログ | チェックなし | |
ログのエクスポート/アップグレードログ | チェックなし | |
IAM ロール | RDS サービスリンクロール | |
マイナーバージョンの自動アップグレードの有効化 | チェックあり | |
メンテナンスウィンドウ | 指定なし | |
削除保護の有効化 | チェックあり |
開発/テスト
大項目 | 小項目 | デフォルト値 |
---|---|---|
可用性と耐久性 | デプロイオプション | マルチAZ DBクラスター |
設定 | 認証情報管理 | AWS Secrets Managerで管理 |
暗号化キーを選択 | aws/secretsmanager | |
インスタンスの設定 | DBインスタンスクラス | コンピューティング最適化クラス、db.c6gd.medium |
ストレージ | ストレージタイプ | 汎用SSD (gp3) |
ストレージ割り当て | 200 GiB | |
プロビジョンド IOPS | 3000 IOPS | |
ストレージスループット | 125 MiBps | |
ストレージの自動スケーリング | - | |
データベース認証 | データベース認証オプション | パスワード認証 |
モニタリング | Performance Insights をオンにする | チェックあり |
Performance Insights の保持期間 | 7日 | |
AWS KMS キー | aws/rds | |
DevOps Guru をオンにする | チェックあり | |
拡張モニタリングの有効化 | チェックなし | |
追加設定 | 最初のデータベース名 | |
DB クラスターのパラメータグループ | default.postgres<バージョン> | |
オプショングループ | - | |
自動バックアップを有効にします | チェックあり | |
バックアップ保持期間 | 7日間 | |
バックアップウィンドウ | 指定なし | |
暗号化 | 暗号を有効化 | |
AWS KMS キー | aws/rds | |
ログのエクスポート/PostgreSQL ログ | チェックなし | |
ログのエクスポート/アップグレードログ | チェックなし | |
IAM ロール | RDS サービスリンクロール | |
マイナーバージョンの自動アップグレードの有効化 | チェックあり | |
メンテナンスウィンドウ | 指定なし | |
削除保護の有効化 | チェックなし |
無料利用枠
大項目 | 小項目 | デフォルト値 |
---|---|---|
可用性と耐久性 | デプロイオプション | 単一DBインスタンス(変更不可) |
設定 | 認証情報管理 | セルフマネージド |
パスワード自動生成 | チェックなし | |
インスタンスの設定 | DBインスタンスクラス | バーストクラス、db.t4g.medium |
ストレージ | ストレージタイプ | 汎用SSD (gp3) |
ストレージ割り当て | 20 GiB | |
プロビジョンド IOPS | 3000 IOPS | |
ストレージスループット | 125 MiBps | |
ストレージの自動スケーリング | チェックあり | |
最大ストレージしきい値 | 1000 GiB | |
データベース認証 | データベース認証オプション | パスワード認証 |
モニタリング | Performance Insights をオンにする | チェックあり |
Performance Insights の保持期間 | 7日 | |
AWS KMS キー | aws/rds | |
DevOps Guru をオンにする | チェックなし | |
拡張モニタリングの有効化 | チェックなし | |
追加設定 | 最初のデータベース名 | 未指定 |
DB クラスターのパラメータグループ | default.postgres<バージョン> | |
オプショングループ | default:postgres<バージョン> | |
自動バックアップを有効にします | チェックあり | |
バックアップ保持期間 | 1日間 | |
バックアップウィンドウ | 指定なし | |
別の AWS リージョンでレプリケーションを有効化 | チェックなし | |
暗号化 | 暗号を有効化 | |
AWS KMS キー | aws/rds | |
ログのエクスポート/PostgreSQL ログ | チェックなし | |
ログのエクスポート/アップグレードログ | チェックなし | |
IAM ロール | RDS サービスリンクロール | |
マイナーバージョンの自動アップグレードの有効化 | チェックあり | |
メンテナンスウィンドウ | 指定なし | |
削除保護の有効化 | チェックなし |
まとめると...
全3テンプレートの設定値を表にまとめてみましたが、このままで少し比較をしにくいので表を結合していきます。
また、違いを太字で記載していきます。
デフォルト値まとめ
大項目 | 小項目 | 本番稼働用 | 開発/テスト | 無料利用枠 |
---|---|---|---|---|
可用性と耐久性 | デプロイオプション | マルチAZ DBクラスター | マルチAZ DBクラスター | 単一DBインスタンス(変更不可) |
設定 | 認証情報管理 | AWS Secrets Managerで管理 | AWS Secrets Managerで管理 | セルフマネージド |
パスワード自動生成 | - | - | チェックなし | |
暗号化キーを選択 | aws/secretsmanager | aws/secretsmanager | - | |
インスタンスの設定 | DBインスタンスクラス | 標準クラス、db.m5d.large | コンピューティング最適化クラス、db.c6gd.medium | バーストクラス、db.t4g.medium |
ストレージ | ストレージタイプ | プロビジョンド IOPS SSD (io2) | 汎用SSD (gp3) | 汎用SSD (gp3) |
ストレージ割り当て | 400 GiB | 200 GiB | 20 GiB | |
プロビジョンド IOPS | 3000 IOPS | 3000 IOPS | 3000 IOPS | |
ストレージスループット | - | 125 MiBps | 125 MiBps | |
ストレージの自動スケーリング | - | - | チェックあり | |
最大ストレージしきい値 | - | - | 1000 GiB | |
データベース認証 | データベース認証オプション | パスワード認証 | パスワード認証 | パスワード認証 |
モニタリング | Performance Insights をオンにする | チェックあり | チェックあり | チェックあり |
Performance Insights の保持期間 | 7日 | 7日 | 7日 | |
AWS KMS キー | aws/rds | aws/rds | aws/rds | |
DevOps Guru をオンにする | チェックあり | チェックあり | チェックなし | |
拡張モニタリングの有効化 | チェックなし | チェックなし | チェックなし | |
追加設定 | 最初のデータベース名 | - | - | 未指定 |
DB クラスターのパラメータグループ | default.postgres<バージョン> | default.postgres<バージョン> | default.postgres<バージョン> | |
オプショングループ | - | - | default:postgres<バージョン> | |
自動バックアップを有効にします | チェックあり | チェックあり | チェックあり | |
バックアップ保持期間 | 7日間 | 7日間 | 1日間 | |
バックアップウィンドウ | 指定なし | 指定なし | 指定なし | |
暗号化 | 暗号を有効化 | 暗号を有効化 | 暗号を有効化 | |
AWS KMS キー | aws/rds | aws/rds | aws/rds | |
ログのエクスポート/PostgreSQL ログ | チェックなし | チェックなし | チェックなし | |
ログのエクスポート/アップグレードログ | チェックなし | チェックなし | チェックなし | |
IAM ロール | RDS サービスリンクロール | RDS サービスリンクロール | RDS サービスリンクロール | |
マイナーバージョンの自動アップグレードの有効化 | チェックあり | チェックあり | チェックあり | |
メンテナンスウィンドウ | 指定なし | 指定なし | 指定なし | |
削除保護の有効化 | チェックあり | チェックなし | チェックなし |
少し冗長なので、値が違う部分だけを抽出していきます。
値が違う項目
大項目 | 小項目 | 本番稼働用 | 開発/テスト | 無料利用枠 |
---|---|---|---|---|
可用性と耐久性 | デプロイオプション | マルチAZ DBクラスター | マルチAZ DBクラスター | 単一DBインスタンス(変更不可) |
設定 | 認証情報管理 | AWS Secrets Managerで管理 | AWS Secrets Managerで管理 | セルフマネージド |
パスワード自動生成 | - (※1) | - (※1) | チェックなし | |
暗号化キーを選択 | aws/secretsmanager | aws/secretsmanager | - (※2) | |
インスタンスの設定 | DBインスタンスクラス | 標準クラス、db.m5d.large | コンピューティング最適化クラス、db.c6gd.medium | バーストクラス、db.t4g.medium |
ストレージ | ストレージタイプ | プロビジョンド IOPS SSD (io2) | 汎用SSD (gp3) | 汎用SSD (gp3) |
ストレージ割り当て | 400 GiB | 200 GiB | 20 GiB | |
プロビジョンド IOPS | 3000 IOPS | 3000 IOPS | 3000 IOPS | |
ストレージスループット | - (※3) | 125 MiBps | 125 MiBps | |
ストレージの自動スケーリング | - (※4) | - (※4) | チェックあり | |
最大ストレージしきい値 | - (※4) | - (※4) | 1000 GiB | |
モニタリング | DevOps Guru をオンにする | チェックあり | チェックあり | チェックなし |
追加設定 | 最初のデータベース名 | - (※4) | - (※4) | 未指定 |
オプショングループ | - (※4) | - (※4) | default:postgres<バージョン> | |
バックアップ保持期間 | 7日間 | 7日間 | 1日間 | |
削除保護の有効化 | チェックあり | チェックなし | チェックなし |
※1: 認証情報管理をAWS Secrets Managerで管理している場合、パスワードは自動設定される。
※2: 認証情報管理がセルフマネージドの場合、設定不可
※3: ストレージタイプが「プロビジョンド IOPS SSD (io2)」の場合、設定不可。スループットはIOPSの設定値により拡張される。参考
※4: 可用性と耐久性が「マルチAZ DBクラスター」に設定されている場合、設定不可
簡単に見ていきます。
可用性と耐久性は本番稼働用、開発/テストでは「マルチAZ DBクラスター」の設定になっています。一方で無料利用枠では「単一DBインスタンス」となっています。
また、エンジンのタイプをPostgreSQLに設定した場合、デプロイオプションには本記事執筆時点で、
- マルチ AZ DB クラスター
- マルチ AZ DB インスタンス
- 単一の DB インスタンス
の3種類がありますが、無料利用枠は「単一の DB インスタンス」から変更することはできないようになっています。
これは自身の想像ですが、意図しない課金が発生しないようにするためではないかと予想しています。
そのほか、DBインスタンスクラスのデフォルト値も大きく異なります。
無料利用枠では一時的に多少の負荷が発生するワークロード向けであるバースト可能インスタンスが選択されていますが、開発/テストでは、高速かつ低遅延なストレージを使用したコンピューティング最適化クラス、本番稼働用では一般的な用途向けの汎用クラスが選択されています。
例えば、本番稼働では中程度のCPU使用率だが、開発/テストでは大規模なテストデータを入れ、高速にテストを行いたい、開発速度を上げたいといった要件に合わせて設定されているのではないかなと考えています。(ここは自身の予想です)
モニタリングや追加設定については、無料利用枠では機械学習を用いて以上な操作パターンなどを検出するDevOps Guruがデフォルトで無効になっています。また、バックアップの保持期間もデフォルトでは1日と、どちらかといえば検証や学習をはじめとした短期利用を想定されているのではないかと思われます。
終わりに
テンプレートをそのまま使う、というよりは常に自身の目的に合った設定を行うことが多いのではないかと思います。
ただ、今回、改めてデフォルト値を比較して結構細かな項目まで設定値が変わっていることがわかり新たな学びとなりました。
簡単なまとめではございますが、皆様の参考になれば幸いです。
お読みいただきありがとうございました。